home *** CD-ROM | disk | FTP | other *** search
-
- var counter = 0
- var spinnerText
-
- function initializeSpinner(oParentContainer)
- {
- // Box for display of select value
- var oSpinnerBox;
- // selected <option> element
- var oSpinnerSelect;
- for (n=0; n<oParentContainer.all.length; n++)
- {
- var obj = oParentContainer.all[n];
- if (obj.MCSpinnerSelect == "true") oSpinnerSelect = obj;
- if (obj.MCSpinnerBox == "true") oSpinnerBox = obj;
- }
- var oSpinnerOptSelected = oSpinnerSelect.options[oSpinnerSelect.selectedIndex];
- if (oSpinnerOptSelected == null) oSpinnerOptSelected = oSpinnerSelect.options[0];
- // show selected option in Spinner box
- oSpinnerBox.innerText = oSpinnerOptSelected.innerText
- }
-
- function setSpinner()
- {
- // button user clicked
- var oClickedBtn = event.srcElement;
- // direction (up/down) to move selections, based on button clicked
- var direction
- if (oClickedBtn.MCSpinnerPlus=="true")direction = "down";
- else direction = "up";
- // identifyl all the elements of the spinner; these include
- // parent container, plus btn, minus btn, box for display of value, and hidden <select> element.
- // Parent container
- //var oParentContainer = .parentElement // change this
- oParentContainer = getSpinnerParent(oClickedBtn)
-
- // Box for display of select value
- var oSpinnerBox;
- // selected <option> element
- var oSpinnerSelect;
- // Plus btn
- var oSpinnerPlus;
- //Minus btn
- var oSpinnerMinus;
- // selected <option> in <select>
- var oSpinnerOptSelected;
- // spinner box is parent of <select>
- //spinnerBox = oClickedBtn.parentElement;
- // find values for all of above, based on their CSS class names
- for (i=0; i<oParentContainer.all.length; i++)
- {
- var obj = oParentContainer.all[i];
- // MCSpinnerPlus and MCSpinnerMinus are custom properties set in the HTML tags
- // to mark the items as spinner buttons
- if (obj.MCSpinnerPlus == "true") oSpinnerPlus = obj;
- if (obj.MCSpinnerMinus == "true") oSpinnerMinus = obj;
- if (obj.MCSpinnerSelect == "true") oSpinnerSelect = obj;
- if (obj.MCSpinnerBox == "true") oSpinnerBox = obj;
- }
-
-
- // find selected option
- oSpinnerOptSelected = oSpinnerSelect.options[oSpinnerSelect.selectedIndex];
- // variable for next option to display
- var oNextOpt;
- // set value for next option to display, based on direction (up/down) button clicked
- if (direction == "down") oNextOpt = oSpinnerOptSelected.nextSibling;
- else oNextOpt = oSpinnerOptSelected.previousSibling;
- // if you are on first or last option, oNextOpt might not be valid. If not, stay on current option
- if (oNextOpt == null || oNextOpt.tagName == null)
- {
- oNextOpt = oSpinnerOptSelected
- }
- // set oNextOpt as selected element
- oNextOpt.selected = true
- // (remember, the real select box is invisible) Show selection contents in spinner box
- oSpinnerBox.innerText = oNextOpt.innerText
- // if there is no next sibling for new selected option, you are at the end, so disable plus btn
- if (oNextOpt.nextSibling == null || oNextOpt.nextSibling.tagName == null)
- {
- disableBtn(oSpinnerPlus);
- oCurFocus = oSpinnerMinus;
- oSpinnerMinus.focus();
- }
- // else make sure plus btn is enabled
- else enableBtn(oSpinnerPlus)
- // if there is no previous sibling for new selected option, you are at the beginning, so disable minus btn
- if (oNextOpt.previousSibling == null || oNextOpt.previousSibling.tagName == null)
- {
- disableBtn(oSpinnerMinus);
- oCurFocus = oSpinnerPlus;
- oSpinnerPlus.focus();
- }
- // else make sure minus btn is enabled
- else enableBtn(oSpinnerMinus)
- }
- function getSpinnerParent(btn)
- {
- var oTempObj = btn
- for (i=0; i<5000; i++)
- {
- oTempObj = oTempObj.parentElement
- if (oTempObj.MCSpinnerContainer == "true")
- {
- return oTempObj;
- break;
- }
- if (oTempObj.tagName == "BODY") return null
- }
- }
- function disableBtn(obj)
- {
- obj.MCTempUnFocusable = "true"
- obj.style.filter = "alpha (opacity = 30)"
- }
- function enableBtn(obj)
- {
- // remove temporary unfocusability
- if (obj.MCTempUnFocusable == "true")obj.MCTempUnFocusable = "false"
- // remove transparency filter
- obj.style.filter = "none"
- }